#include <REGX52.H>
#include <INTRINS.H>
#include "I2C.h"
#include "AT24c02.h"

#define AT24C02_ADDR		0xA0

/**
  * @brief  AT24C02 EPROM存储器指定地址写一个字节数据
  * @param  addr 写存储器地址
  * @param  data 写存储器数据
  * @retval 0 写成功，1 写失败
  */
unsigned char AT24c02_WriteByte(unsigned char addr, unsigned char byte)
{
	I2C_Start();
	
	I2C_SendByte(AT24C02_ADDR);
	I2C_RecvAck();
	
	I2C_SendByte(addr);
	I2C_RecvAck();
	
	I2C_SendByte(byte);
	I2C_RecvAck();
	
	//结束条件
	I2C_Stop();
}

/**
  * @brief  AT24C02 EPROM存储器指定地址读一个字节数据
  * @param  addr 读存储器地址 
  * @retval 
  */
unsigned char AT24c02_ReadByte(unsigned char addr)
{
	unsigned char byte = 0;
	
	//起始条件
	I2C_Start();
	
	//从机地址 写
	I2C_SendByte(AT24C02_ADDR);
	I2C_RecvAck();
	
	//写存储器地址
	I2C_SendByte(addr);
	I2C_RecvAck();
	
	//Restart起始条件
	I2C_Start();
	
	//从机地址 读
	I2C_SendByte(AT24C02_ADDR | 0x01);
	I2C_RecvAck();
	
	byte = I2C_RecvByte();
	I2C_SendNack();
	
	
	//结束条件
	I2C_Stop();
	
	return byte;
}